package com.ssy.lingxi.after.sale.model.vo.request;

import com.ssy.lingxi.after.sale.model.bo.ProofFileBO;
import com.ssy.lingxi.after.sale.model.bo.ReceiveGoodsBO;

import javax.validation.Valid;
import javax.validation.constraints.*;
import java.io.Serializable;
import java.util.List;

/**
 * 退货保存VO
 * @author 伍将
 * @date 2020/9/4
 * @version 2.0.0
 */
public class ReturnGoodsSaveVO implements Serializable {
    private static final long serialVersionUID = 4115213225104292702L;

    /**
     * 退货id（新增时为0，修改时为原标识id）
     */
    private Long returnId;

    /**
     * 供应商会员id
     */
    @NotNull(message = "供应商会员id要大于0")
    @Positive(message = "供应商会员id要大于0")
    private Long supplierMemberId;

    /**
     * 供应商角色id
     */
    @NotNull(message = "供应商角色Id要大于0")
    @Positive(message = "供应商角色Id要大于0")
    private Long supplierRoleId;

    /**
     * 供应商会员名称
     */
    @NotBlank(message = "供应商会员名称不能为空")
    private String supplierMemberName;

    /**
     * 任务类型:默认-18，手工发货-31,43-合同审核，44-合同手工发货审核
     */
    private Integer taskType;
    /**
     * 任务类型key:来源于订单商品
     */
    @NotNull(message = "任务类型不能为空")
    private String taskTypeKey;

    /**
     * 申请单摘要
     */
    @NotBlank(message = "申请单摘要不能为空")
    @Size(max = 60, message = "申请单摘要最长60个字符")
    private String applyAbstract;

    /**
     * 退货收货地址
     */
    @Valid
    @NotNull(message = "退货收货地址不能为空")
    private ReceiveGoodsBO returnGoodsAddress;

    /**
     * 相关故障原因附件
     */
    @Valid
    private List<ProofFileBO> proofFileList;

    /**
     * 退货商品列表
     */
    @Valid
    @NotNull(message = "退货商品不能为空")
    @Size(min = 1, message = "至少有一个退货商品")
    private List<ReturnGoodsDetailSaveVO> returnGoodsList;

    /**
     * 订单类型
     */
    @NotNull(message = "订单类型不能为空")
    @PositiveOrZero(message = "订单类型不能为空")
    private Integer orderType;
    /**
     * 退货原因
     */
/*819版    @NotBlank(message = "退货原因不能为空")
    @Size(max = 60, message = "退货原因不能超过60个字符")*/
    private String returnReason;
    /**
     * 店铺id
     */
    private Long shopId;
    /**
     * 店铺logo
     */
    private String shopLogo;
    /**
     * 店铺名称
     */
    private String shopName;

    /**
     * AgentFlagEnum
     * 代客标识: 0 - 非代客； 1 - 代客
     */
    private Integer agentFlag;

    public Integer getOrderType() {
        return orderType;
    }

    public void setOrderType(Integer orderType) {
        this.orderType = orderType;
    }

    public Integer getTaskType() {
        return taskType;
    }

    public void setTaskType(Integer taskType) {
        this.taskType = taskType;
    }

    public String getTaskTypeKey() {
        return taskTypeKey;
    }

    public void setTaskTypeKey(String taskTypeKey) {
        this.taskTypeKey = taskTypeKey;
    }

    public String getSupplierMemberName() {
        return supplierMemberName;
    }

    public void setSupplierMemberName(String supplierMemberName) {
        this.supplierMemberName = supplierMemberName;
    }

    public Long getSupplierMemberId() {
        return supplierMemberId;
    }

    public void setSupplierMemberId(Long supplierMemberId) {
        this.supplierMemberId = supplierMemberId;
    }

    public Long getSupplierRoleId() {
        return supplierRoleId;
    }

    public void setSupplierRoleId(Long supplierRoleId) {
        this.supplierRoleId = supplierRoleId;
    }

    public Long getReturnId() {
        return returnId;
    }

    public void setReturnId(Long returnId) {
        this.returnId = returnId;
    }

    public String getApplyAbstract() {
        return applyAbstract;
    }

    public void setApplyAbstract(String applyAbstract) {
        this.applyAbstract = applyAbstract;
    }

    public ReceiveGoodsBO getReturnGoodsAddress() {
        return returnGoodsAddress;
    }

    public void setReturnGoodsAddress(ReceiveGoodsBO returnGoodsAddress) {
        this.returnGoodsAddress = returnGoodsAddress;
    }

    public List<ProofFileBO> getProofFileList() {
        return proofFileList;
    }

    public void setProofFileList(List<ProofFileBO> proofFileList) {
        this.proofFileList = proofFileList;
    }

    public List<ReturnGoodsDetailSaveVO> getReturnGoodsList() {
        return returnGoodsList;
    }

    public void setReturnGoodsList(List<ReturnGoodsDetailSaveVO> returnGoodsList) {
        this.returnGoodsList = returnGoodsList;
    }

    public String getReturnReason() {
        return returnReason;
    }

    public void setReturnReason(String returnReason) {
        this.returnReason = returnReason;
    }

    public Long getShopId() {
        return shopId;
    }

    public void setShopId(Long shopId) {
        this.shopId = shopId;
    }

    public String getShopLogo() {
        return shopLogo;
    }

    public void setShopLogo(String shopLogo) {
        this.shopLogo = shopLogo;
    }

    public String getShopName() {
        return shopName;
    }

    public void setShopName(String shopName) {
        this.shopName = shopName;
    }

    public Integer getAgentFlag() {
        return agentFlag;
    }

    public void setAgentFlag(Integer agentFlag) {
        this.agentFlag = agentFlag;
    }
}
